import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
/*
需要在不同路由中使用同一个会改编的参数，也就是需要一个全局参数,比如我们的jwt
 */
export default new Vuex.Store({
  //属性
  state: {
    //这里放全局参数
    token: localStorage.getItem("token"),//或者 '',
    userInfo: JSON.parse(sessionStorage.getItem("userInfo"))//或者 {}
  },
  //set方法
  mutations: {
    SET_TOKEN: (state, token) => {
      state.token = token
      //存入本地缓存
      localStorage.setItem("token",token)
    },
    SET_USERINFO: (state, userInfo) => {
      state.userInfo = userInfo
      //存入session缓存，浏览器关闭就会丢失，sessionStorage不能存对象，userInfo进行序列化存入
      sessionStorage.setItem("userInfo",JSON.stringify(userInfo))
    },
    REMOVE_INFO:(state) => {
      state.token = ''
      state.userInfo = {}
      localStorage.setItem("token",'')
      sessionStorage.setItem("userInfo",JSON.stringify(''))
    }
  },
  //get方法
  getters: {
    getUserInfo: state => {
      return state.userInfo
    }
  },
  actions: {
  },
  modules: {
    //这里是我自己理解的是为了给全局变量分组，所以需要写提前声明其他store文件，然后引入这里
  }
})
